home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / il_c / ilSpatialImg.z / ilSpatialImg
Encoding:
Text File  |  2002-10-03  |  18.0 KB  |  330 lines

  1.  
  2.  
  3.  
  4. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg - Base class for spatial operator images
  10.  
  11. IIIINNNNHHHHEEEERRRRIIIITTTTSSSS FFFFRRRROOOOMMMM
  12.      ilLink : ilImage : ilCacheImg : ilMemCacheImg : ilOpImg
  13.  
  14. HHHHEEEEAAAADDDDEEEERRRR FFFFIIIILLLLEEEE
  15.      #include <il/ilCdefs.h>
  16.  
  17. CCCCLLLLAAAASSSSSSSS DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  18.      ilSpatialImg is the base class for spatial operator images.  ilSpatialImg
  19.      has a pure virtual member function and thus cannot be created as an
  20.      object.  It is intended to be used to derive spatial operator images.
  21.      However, a pointer to an ilSpatialImg can be declared.
  22.  
  23.      ilSpatialImg handles the messy details of allocating a working buffer and
  24.      reading input data based on the size of the kernel being used and the
  25.      current edge mode. The edge mode specifies how to handle pixels along the
  26.      edge of a page. For example, additional input data can be used to compute
  27.      a full page. In this case, the amount of additional input data read
  28.      depends on the size of the kernel being used.
  29.  
  30.      UUUUssssiiiinnnngggg iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg
  31.      Spatial operators compute a result based on a local neighborhood of
  32.      pixels.  The size of the kernel being used determines the size of the
  33.      neighborhood.  Therefore, the size of the kernel must be known to compute
  34.      the size of the working buffer.
  35.  
  36.      The edge mode determines how pixels along the edge of the image are
  37.      handled. By default, additional input data is read to allow pixels along
  38.      the edge to be computed. Several edge modes are supported such as
  39.      _i_l_P_a_d_S_r_c, _i_l_P_a_d_D_s_t, _i_l_N_o_P_a_d, _i_l_W_r_a_p and _i_l_R_e_f_l_e_c_t.
  40.  
  41.      For more details see iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmggggSSSSeeeettttEEEEddddggggeeeeMMMMooooddddeeee().
  42.  
  43.      In addition, an offset table, _k_e_r_n_O_f_f, and a value table, _k_e_r_n_V_a_l, are
  44.      built based on the input kernel specified. The offset table contains
  45.      offsets into the input buffer to access data corresponding to nonzero
  46.      kernel elements.  The value table contains the nonzero kernel elements
  47.      and corresponds to the offset table. These tables are provided for
  48.      convenience to derived classes that choose to use them.
  49.  
  50.  
  51. CCCCLLLLAAAASSSSSSSS MMMMEEEEMMMMBBBBEEEERRRR FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN SSSSUUUUMMMMMMMMAAAARRRRYYYY
  52.      SSSSeeeettttttttiiiinnnngggg ssssppppaaaattttiiiiaaaallll ooooppppeeeerrrraaaattttoooorrrr ppppaaaarrrraaaammmmeeeetttteeeerrrrssss
  53.  
  54.           void ilSpatialImgSetDynamicKernel(ilSpatialImg* img, ilKernel* kernel)
  55.           void ilSpatialImgSetEdgeMode(ilSpatialImg* img, ilEdgeMode eMode)
  56.           void ilSpatialImgSetKernel(ilSpatialImg* img, ilKernel* kern)
  57.           void ilSpatialImgSetKernelSize(ilSpatialImg* img, int x, int y, int z)
  58.  
  59.  
  60.  
  61.                                                                         PPPPaaaaggggeeee 1111
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  69.  
  70.  
  71.  
  72.      QQQQuuuueeeerrrryyyyiiiinnnngggg ssssppppaaaattttiiiiaaaallll ooooppppeeeerrrraaaattttoooorrrr ppppaaaarrrraaaammmmeeeetttteeeerrrrssss
  73.  
  74.           ilEdgeMode ilSpatialImgGetEdgeMode(ilSpatialImg *img)
  75.           ilKernel* ilSpatialImgGetKernel(ilSpatialImg* img)
  76.           void ilSpatialImgGetKernelSize3D(ilSpatialImg *img, int *x, int *y,
  77.                                            int *z)
  78.           void ilSpatialImgGetKernelSize(ilSpatialImg *img, int *x, int *y)
  79.  
  80.  
  81. FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNN DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNNSSSS
  82.      ggggeeeettttEEEEddddggggeeeeMMMMooooddddeeee(((())))
  83.  
  84.           ilEdgeMode ilSpatialImgGetEdgeMode(ilSpatialImg *img)
  85.  
  86.  
  87.           Returns the current edge mode as the enumerated type ilEdgeMode. See
  88.           also iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmggggSSSSeeeettttEEEEddddggggeeeeMMMMooooddddeeee().
  89.  
  90.      ggggeeeettttKKKKeeeerrrrnnnneeeellll(((())))
  91.  
  92.           ilKernel *ilSpatialImgGetKernel(ilSpatialImg *obj)
  93.  
  94.  
  95.           This function returns the current input kernel value.
  96.  
  97.      ggggeeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee(((())))
  98.  
  99.           void ilSpatialImgGetKernelSize(ilSpatialImg *img, int *x, int *y)
  100.           void ilSpatialImgGetKernelSize3D(ilSpatialImg *img, int *x, int *y, int *z)
  101.  
  102.  
  103.           This function is overloaded to conveniently handle the 2D case. It
  104.           returns the current kernel size in _x, _y, and optionally, _z. See also
  105.           iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmggggSSSSeeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee().
  106.  
  107.      sssseeeettttDDDDyyyynnnnaaaammmmiiiiccccKKKKeeeerrrrnnnneeeellll(((())))
  108.  
  109.           void ilSpatialImgSetDynamicKernel(ilKernel* kern)
  110.  
  111.  
  112.           This functions sets this objects input kernel to the ilKernel
  113.           pointed to by _k_e_r_n. This function differs from iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmggggSSSSeeeettttKKKKeeeerrrrnnnneeeellll
  114.           in that this ilSpatialImg object will watch for changes to the input
  115.           kernel.
  116.  
  117.      sssseeeettttEEEEddddggggeeeeMMMMooooddddeeee(((())))
  118.  
  119.           void ilSpatialImgSetEdgeMode(ilSpatialImg *img, ilEdgeMode eMode)
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.                                                                         PPPPaaaaggggeeee 2222
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  135.  
  136.  
  137.  
  138.           This function sets the edge mode to the enumerated type _i_l_E_d_g_e_M_o_d_e
  139.           specified by _e_M_o_d_e. The edge mode specifies how to handle pixels
  140.           along the edge of the image. Spatial operators process a
  141.           neighborhood of input pixels defined by the kernel. Therefore,
  142.           output pixels within half the kernel size along the edge of the
  143.           image, do not have enough input data to be computed. This situation
  144.           can be handled in many ways as specified by the edge mode. Several
  145.           edge modes are supported such as: _i_l_P_a_d_S_r_c, _i_l_P_a_d_D_s_t, _i_l_N_o_P_a_d,
  146.           _i_l_W_r_a_p and _i_l_R_e_f_l_e_c_t.  The default edge mode is _i_l_P_a_d_S_r_c.
  147.  
  148.           For _i_l_P_a_d_S_r_c (pad source), extra input data is read, which allows
  149.           pixels near the edge to be processed. The amount of extra data read
  150.           depends on the kernel size in each dimension. The requested input
  151.           data is filled as needed near the edge of the image, with the
  152.           current _f_i_l_l_V_a_l_u_e.
  153.  
  154.           For _i_l_P_a_d_D_s_t (pad destination), the border along the edge of the
  155.           image is filled with its _f_i_l_l_V_a_l_u_e. This is done because the
  156.           resultant image is smaller than the input image by the kernel size
  157.           in each dimension.
  158.  
  159.           For _i_l_N_o_P_a_d (no pad), nothing is done about the borders and the
  160.           resulting image is reduced in size by the size of the kernel in each
  161.           dimension causing a shift toward the origin.
  162.  
  163.           For _i_l_W_r_a_p, data from the opposite edge in the source image is used
  164.           to fill in missing data along the edges.  The amount of data wrapped
  165.           depends on the size of the kernel in each dimension.
  166.  
  167.           For _i_l_R_e_f_l_e_c_t, data near an edge is reflected and used to fill in
  168.           missing data along the edges.  The amount of data reflected depends
  169.           on the size of the kernel in each dimension.
  170.  
  171.      sssseeeettttKKKKeeeerrrrnnnneeeellll(((())))
  172.  
  173.           void ilSpatialImgSetKernel(ilSpatialImg *img, ilKernel *kern)
  174.  
  175.  
  176.           This function sets the input kernel to the ilKernel pointed to by
  177.           _k_e_r_n. The default value is NULL. This function calls
  178.           iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmggggSSSSeeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee() to update the size of the kernel.
  179.  
  180.      sssseeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee(((())))
  181.  
  182.           void ilSpatialImgSetKernelSize(ilSpatialImg *img, int x, int y, int z)
  183.  
  184.  
  185.           The x, y and z size of the kernel are set to _x, _y and _z.  This
  186.           function also sets the minimum page size based on the size of the
  187.           kernel. It is set to a multiple of the kernel size to enhance
  188.           efficiency.  iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmggggSSSSeeeettttKKKKeeeerrrrnnnneeeellllSSSSiiiizzzzeeee()
  189.  
  190.  
  191.  
  192.  
  193.                                                                         PPPPaaaaggggeeee 3333
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  201.  
  202.  
  203.  
  204. IIIINNNNHHHHEEEERRRRIIIITTTTEEEEDDDD MMMMEEEEMMMMBBBBEEEERRRR FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
  205.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllOOOOppppIIIImmmmgggg
  206.      ilOpImgClearClamp(), ilOpImgGetBias(), ilOpImgGetClamp(),
  207.      ilOpImgGetValidOrders(), ilOpImgGetValidTypes(), ilOpImgIsClamped(),
  208.      ilOpImgIsPrecisionKept(), ilOpImgKeepPrecision(), ilOpImgSetBias(),
  209.      ilOpImgSetClampMinMax(), ilOpImgSetClamp()
  210.  
  211.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllMMMMeeeemmmmCCCCaaaacccchhhheeeeIIIImmmmgggg
  212.      ilMemCacheImgEnableMP(), ilMemCacheImgGetPageTime(),
  213.      ilMemCacheImgGetRetainMode(), ilMemCacheImgGetThrashMode(),
  214.      ilMemCacheImgGetThrashTime(), ilMemCacheImgGetTotalPageTime(),
  215.      ilMemCacheImgIsMPenabled(), ilMemCacheImgSetRetainMode(),
  216.      ilMemCacheImgSetThrashMode()
  217.  
  218.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllCCCCaaaacccchhhheeeeIIIImmmmgggg
  219.      ilCacheImgFlush(), ilCacheImgGetCacheSize()
  220.  
  221.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllIIIImmmmaaaaggggeeee
  222.      ilAddInput(), ilAllocFillData(), ilClipTile(), ilClipTileAsTile(),
  223.      ilClipTileFloat(), ilClipTileFloatAsTile(),
  224.      ilConfigureRetainedCacheImage(), ilCopy(), ilCopyTile(), ilCopyTile3D(),
  225.      ilCopyTileCfg(), ilFillTile(), ilFillTile3D(), ilFillTileRGB(),
  226.      ilFreeFillData(), ilGetColorImg(), ilGetColorModel(), ilGetColormap(),
  227.      ilGetColormapPtr(), ilGetCompression(), ilGetConfig(), ilGetCsize(),
  228.      ilGetDataType(), ilGetDimensions(), ilGetDirectInput(),
  229.      ilGetDisplayCacheEnable(), ilGetFill(), ilGetFillData(),
  230.      ilGetFillValue(), ilGetHeight(), ilGetHwEnable(), ilGetHwHint(),
  231.      ilGetHwHintName(), ilGetHwIntHint(), ilGetHwIntHintName(), ilGetInput(),
  232.      ilGetInputTileRequirement(), ilGetLockTileSet(), ilGetMappedPageSize(),
  233.      ilGetMappedSize(), ilGetMaxColormapLevels(), ilGetMaxValue(),
  234.      ilGetMinValue(), ilGetNumChans(), ilGetNumInputs(), ilGetOrder(),
  235.      ilGetOrientation(), ilGetPageBorder(), ilGetPageBorderPtr(),
  236.      ilGetPageBorderX(), ilGetPageBorderY(), ilGetPageBorderZ(),
  237.      ilGetPageCounts(), ilGetPageDelta(), ilGetPageDeltaStruct(),
  238.      ilGetPageDimensions(), ilGetPageIndices(), ilGetPageOrigin(),
  239.      ilGetPageOriginC(), ilGetPageOriginStruct(), ilGetPageOriginX(),
  240.      ilGetPageOriginY(), ilGetPageOriginZ(), ilGetPageSize(),
  241.      ilGetPageSizeBytes(), ilGetPageSizeC(), ilGetPageSizePix(),
  242.      ilGetPageSizeStruct(), ilGetPageSizeVal(), ilGetPageSizeX(),
  243.      ilGetPageSizeXY(), ilGetPageSizeY(), ilGetPageSizeZ(), ilGetPixel(),
  244.      ilGetPixel3D(), ilGetPriority(), ilGetScaleMax(), ilGetScaleMin(),
  245.      ilGetSize(), ilGetSizePtr(), ilGetStrides(), ilGetSubTile(),
  246.      ilGetSubTile3D(), ilGetTile(), ilGetTile3D(), ilGetWidth(), ilGetXsize(),
  247.      ilGetYsize(), ilGetZsize(), ilHasPageBorder(), ilHasPages(),
  248.      ilInitScaleMinMax(), ilIsColorImg(), ilIsIntegral(),
  249.      ilIsMirrorOrientation(), ilIsSigned(), ilIsWritable(), ilLockPage(),
  250.      ilLockPageSet(), ilLockTile(), ilLockTile3D(), ilMapFlipTrans(),
  251.      ilMapFromInput(), ilMapFromInput2D(), ilMapFromInput3D(),
  252.      ilMapFromSource(), ilMapFromSource2D(), ilMapFromSource3D(),
  253.      ilMapOrientation(), ilMapSize(), ilMapTile(), ilMapTileFlipTrans(),
  254.      ilMapTileFloat(), ilMapToInput(), ilMapToInput2D(), ilMapToInput3D(),
  255.      ilMapToSource(), ilMapToSource2D(), ilMapToSource3D(), ilMapXY(),
  256.  
  257.  
  258.  
  259.                                                                         PPPPaaaaggggeeee 4444
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266. iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))    IIIImmmmaaaaggggeeeeVVVViiiissssiiiioooonnnn LLLLiiiibbbbrrrraaaarrrryyyy CCCC++++++++ RRRReeeeffffeeeerrrreeeennnncccceeee MMMMaaaannnnuuuuaaaallll    iiiillllSSSSppppaaaattttiiiiaaaallllIIIImmmmgggg((((3333))))
  267.  
  268.  
  269.  
  270.      ilMapXYFloat(), ilMapXYSign(), ilQCopyTileCfg(), ilQFillTile3D(),
  271.      ilQFillTileRGB(), ilQGetSubTile3D(), ilQGetTile3D(), ilQLockPageSet(),
  272.      ilQSetSubTile3D(), ilQSetTile3D(), ilRemoveHwHint(),
  273.      ilRemoveHwHintName(), ilRemoveInput(), ilSetColorModel(),
  274.      ilSetColormap(), ilSetCompression(), ilSetCsize(), ilSetDataType(),
  275.      ilSetDisplayCacheEnable(), ilSetFill(), ilSetFillValue(),
  276.      ilSetHwEnable(), ilSetHwHint(), ilSetHwIntHint(), ilSetHwIntHintName(),
  277.      ilSetInput(), ilSetMaxColormapLevels(), ilSetMaxValue(), ilSetMinValue(),
  278.      ilSetNumChans(), ilSetOrder(), ilSetOrientation(), ilSetPageBorder(),
  279.      ilSetPageBorderStruct(), ilSetPageSize(), ilSetPageSizeC(),
  280.      ilSetPageSizeStruct(), ilSetPageSizeXY(), ilSetPageSizeZ(), ilSetPixel(),
  281.      ilSetPixel3D(), ilSetPriority(), ilSetScaleMinMax(), ilSetScaleType(),
  282.      ilSetSize(), ilSetSubTile(), ilSetSubTile3D(), ilSetTile(),
  283.      ilSetTile3D(), ilSetXYsize(), ilSetXsize(), ilSetYsize(), ilSetZsize(),
  284.      ilUnlockPage(), ilUnlockPageSet()
  285.  
  286.    IIIInnnnhhhheeeerrrriiiitttteeeedddd ffffrrrroooommmm iiiillllLLLLiiiinnnnkkkk
  287.      ilLinkClearSet(), ilLinkClearStatus(), ilLinkGetDescription(),
  288.      ilLinkGetDirectParent(), ilLinkGetDisabledIndex(), ilLinkGetFloatProp(),
  289.      ilLinkGetGenerationID(), ilLinkGetIntProp(), ilLinkGetNumChildren(),
  290.      ilLinkGetNumParents(), ilLinkGetParent(), ilLinkGetPtrProp(),
  291.      ilLinkGetRelatedChild(), ilLinkGetRelatedDelete(),
  292.      ilLinkGetRelatedType(), ilLinkGetStatus(), ilLinkIsAllowed(),
  293.      ilLinkIsAltered(), ilLinkIsEnabled(), ilLinkIsRelated(), ilLinkIsSet(),
  294.      ilLinkRemoveParent(), ilLinkRemoveProp(), ilLinkSetDescription(),
  295.      ilLinkSetDisabledIndex(), ilLinkSetEnabled(), ilLinkSetParent(),
  296.      ilLinkSetProp(), ilLinkSetRelatedDelete(), ilLinkSetRelatedType()
  297.  
  298. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  299.      ilImage, ilCache, ilOpImg
  300.  
  301. NNNNOOOOTTTTEEEESSSS
  302.      If _w_T_y_p_e is different from _d_t_y_p_e, then the derived class must convert the
  303.      data type between the input buffer and the output buffer.
  304.  
  305.      Note that an even-sized kernel causes a half-pixel shift away from the
  306.      origin because the center of the kernel is _b_e_t_w_e_e_n the center elements.
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.                                                                         PPPPaaaaggggeeee 5555
  326.  
  327.  
  328.  
  329.